package com.autumn.mybatis.provider;

/**
 * 数据库提供者
 * 
 * @author 杨昌国
 *
 *         2017-10-11 09:38:36
 */
public interface IDbProvider {

	/**
	 * 自定义或未知 连接类型
	 */
	public final static int CONNECT_TYPE_CUSTOM = 0;

	/**
	 * mysql 连接类型
	 */
	public final static int CONNECT_TYPE_MY_SQL = 1;

	/**
	 * sql_server 连接类型
	 */
	public final static int CONNECT_TYPE_SQL_SERVER = 10;

	/**
	 * oracle 连接类型
	 */
	public final static int CONNECT_TYPE_ORACLE = 20;

	/**
	 * PostgresSql 连接类型
	 */
	public final static int CONNECT_TYPE_POSTGRESSQL = 31;
	/**
	 * DB2 连接类型
	 */
	public final static int CONNECT_TYPE_DB2 = 32;
	/**
	 * MariaDB 连接类型
	 */
	public final static int CONNECT_TYPE_MARIADB = 33;
	/**
	 * Sybase 连接类型
	 */
	public final static int CONNECT_TYPE_SYBASE = 34;
	/**
	 * SQLite 连接类型
	 */
	public final static int CONNECT_TYPE_SQLITE = 35;

	/**
	 * Access 连接类型
	 */
	public final static int CONNECT_TYPE_ACCESS = 36;

	/**
	 * OceanBase 连接类型
	 */
	public final static int CONNECT_TYPE_OCEANBASE = 37;

	/**
	 * 获取驱动名称
	 * 
	 * @return
	 */
	String getDriveName();

	/**
	 * 获取连接类型
	 * 
	 * @return
	 *
	 */
	int getConnectType();

	/**
	 * 获取插入生成器
	 * 
	 * @return
	 */
	IInsertBuilder getInsertBuilder();

	/**
	 * 获取删除生成器
	 * 
	 * @return
	 */
	IDeleteBuilder getDeleteBuilder();

	/**
	 * 获取更新生成器
	 * 
	 * @return
	 */
	IUpdateBuilder getUpdateBuilder();

	/**
	 * 获取查询生成器
	 * 
	 * @return
	 */
	IQueryBuilder getQueryBuilder();

	/**
	 * 获取定义生成器
	 * 
	 * @return
	 */
	IDefinitionBuilder getDefinitionBuilder();

	/**
	 * 获取命令生成器
	 * 
	 * @return
	 */
	ICommandBuilder getCommandBuilder();
}
